#include <stdio.h>
#include <stdlib.h>

#include "joueur.h"


void joInit(Joueur* jo,int position)
{
    jo->nb_cartes=8;
    jo->point=0;
    jo->humain = 0;
    jo->position = position;
}




Carte joPose_Premiere_Carte(Joueur *premier_joueur,int indice)
{
    Carte tmp;
    int i;

    if (premier_joueur->humain == 0)
    {
        tmp=premier_joueur->main[0];

        for(i=0;i<premier_joueur->nb_cartes-1;i++)
        {
            premier_joueur->main[i]=premier_joueur->main[i+1];

        }

        premier_joueur->nb_cartes--;

        return tmp;
    }
    else if(premier_joueur->humain == 1)
    {
        tmp=premier_joueur->main[indice];

        for(i=indice;i<premier_joueur->nb_cartes-1;i++)
        {
            premier_joueur->main[i]=premier_joueur->main[i+1];

        }

        premier_joueur->nb_cartes--;

        return tmp;

    }
    return tmp;
}

Joueur joJoueur_Suivant(Joueur* tab_joueur,int position_actu)
{
    int i;
    for(i=0;i<4;i++)
    {
        if (tab_joueur[i].position == position_actu)
        {
            return tab_joueur[(i+1)%4];
        }
    }
    return tab_joueur[i];
}

Carte joPose_Carte_Suivante(Joueur *joueur_actu, Carte* tab_carte_table,int indice,int position)
{
    Carte tmp,test;
    int i=0;
    int j;

    if (joueur_actu->humain == 0)
    {

        tmp=joueur_actu->main[0];
        test = tab_carte_table[position];

        while((tmp.couleur != test.couleur)&&(i<8))
        {
            tmp=joueur_actu->main[i];
            i++;
        }
        if (tmp.couleur == test.couleur)
        {
            for(j=i;j<joueur_actu->nb_cartes-1-i;j++)
                {
                    joueur_actu->main[j]=joueur_actu->main[j+1];
                }
        }
        else
        {
            i=0;
            tmp=joueur_actu->main[0];
            while((tmp.atout != 1)&&(i<8))
            {
                tmp=joueur_actu->main[i];
                i++;
            }
            if (tmp.atout == 1)
            {

                for(j=i;j<joueur_actu->nb_cartes-1-i;j++)
                {
                    joueur_actu->main[j]=joueur_actu->main[j+1];

                }
            }
            else
            {
                tmp=joueur_actu->main[0];
                for(j=0;j<joueur_actu->nb_cartes-1-i;j++)
                {
                    joueur_actu->main[j]=joueur_actu->main[j+1];
                }
            }
        }
        joueur_actu->nb_cartes--;
        return tmp;
    }
    else if(joueur_actu->humain == 1)
    {
        tmp=joueur_actu->main[indice];

        for(i=indice;i<joueur_actu->nb_cartes-1;i++)
        {
            joueur_actu->main[i]=joueur_actu->main[i+1];
        }

        joueur_actu->nb_cartes--;

        return tmp;

    }
    return tmp;
}

int joRemoporte_pli(Carte *pli,int position)
{

    int i,nb_point;
    bool presence;
    int indice= 0;
    nb_point=0;


    for(i=0;i<4;i++)
    {
        if(pli[i].atout == 1)
        {
            presence = 1;
            if(pli[i].nb_points > nb_point)
            {
                    nb_point = pli[i].nb_points;
                    indice = i;
            }
        }
        else if ((pli[i].couleur == pli[position].couleur)&&(presence == 0))
        {
            if(pli[i].nb_points > nb_point)
            {
                    nb_point = pli[i].nb_points;
                    indice = i;
            }
        }
    }

    return indice;
}

int joPoint_pli(Carte *pli)
{
    int somme;

    somme = pli[0].nb_points + pli[1].nb_points + pli[2].nb_points + pli[3].nb_points;

    return somme;

}

void joAjoutePoint(Joueur* vainqueur,Carte pli[4])
{
    int somme;

    somme = pli[0].nb_points + pli[1].nb_points + pli[2].nb_points + pli[3].nb_points;

    vainqueur->point = vainqueur->point + somme;
}








